//package oc.tm.sg.admin.web.service.impl;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//import oc.tm.sg.admin.govern.domain.SgInvoke;
//import oc.tm.sg.admin.govern.domain.SgStatistics;
//import oc.tm.sg.admin.web.service.StatisticsService;
//
///**
// * 数据统计控制器
// * @author lry
// */
//public class StatisticsServiceImpl implements StatisticsService {
//
//    /**
//     * 根据服务获取获取服务统计列表
//     * @param service 服务名称，如:com.alibaba.dubbo.demo.hello.HelloService
//     * @return
//     */
//    public List<SgStatistics> getSgStatisticsesByService(SgInvoke dubboInvoke) {
//        // Set default Search Date
//        if (dubboInvoke.getInvokeDate() == null && dubboInvoke.getInvokeDateFrom() == null && dubboInvoke.getInvokeDateTo() == null) {
//            dubboInvoke.setInvokeDate(new Date());
//        }
//        //获取Service方法
//        List<String> methods = dubboMonitorService.getMethodsByService(dubboInvoke);
//        List<SgInvoke> dubboInvokes;
//        List<SgStatistics> dubboStatisticses = new ArrayList<SgStatistics>();
//        SgStatistics dubboStatistics;
//        for (String method : methods) {
//            dubboStatistics = new SgStatistics();
//            dubboStatistics.setMethod(method);
//            dubboInvoke.setMethod(method);
//            dubboInvoke.setType("provider");
//            
//            dubboInvokes = dubboMonitorService.countSgInvokeInfo(dubboInvoke);
//            for (SgInvoke di : dubboInvokes) {
//                if (di == null) {
//                    continue;
//                }
//                dubboStatistics.setProviderSuccess(di.getSuccess());
//                dubboStatistics.setProviderFailure(di.getFailure());
//                dubboStatistics.setProviderAvgElapsed(di.getSuccess() != 0 ? Double.valueOf(String.format("%.4f", di.getElapsed() / di.getSuccess())) : 0);
//                dubboStatistics.setProviderMaxElapsed(di.getMaxElapsed());
//                dubboStatistics.setProviderMaxConcurrent(di.getMaxConcurrent());
//            }
//            dubboInvoke.setType("consumer");
//            
//            dubboInvokes = dubboMonitorService.countSgInvokeInfo(dubboInvoke);
//            for (SgInvoke di : dubboInvokes) {
//                if (di == null) {
//                    continue;
//                }
//                dubboStatistics.setConsumerSuccess(di.getSuccess());
//                dubboStatistics.setConsumerFailure(di.getFailure());
//                dubboStatistics.setConsumerAvgElapsed(di.getSuccess() != 0 ? Double.valueOf(String.format("%.4f", di.getElapsed() / di.getSuccess())) : 0);
//                dubboStatistics.setConsumerMaxElapsed(di.getMaxElapsed());
//                dubboStatistics.setConsumerMaxConcurrent(di.getMaxConcurrent());
//            }
//            dubboStatisticses.add(dubboStatistics);
//        }
//        
//        return dubboStatisticses;
//    }
//
//}
